import router from "./router";
import store from "./store";
import NProgress from "nprogress";
import "nprogress/nprogress.css";
import { getTokenDecrypt } from "@/utils/auth";
import { MessageBox } from "element-ui";

NProgress.configure({
  showSpinner: false,
});

import { gelicenseInfo } from "@/api/unauthorized";

const whiteList = [
  "/login",
  "/auth-redirect",
  "/bind",
  "/register",
  "/findpwd",
  "/403",
  "/500",
  "/unauthorized",
  "/tmpAlarmInfo",
  "/applicationType",
  "/tmpApiReport",
  "/tmpAssetsReport",
];
store.dispatch("GenerateRoutes").then((accessRoutes) => {});
// router.beforeEach((to, from, next) => {
//   NProgress.start();
//   if (whiteList.indexOf(to.path) !== -1) {
//     next();
//   } else {
//     if (getTokenDecrypt()) {
//       store.dispatch("GenerateRoutes").then((accessRoutes) => {});
//       if (to.path === "/login") {
//         next({
//           path: "/",
//         });
//         // NProgress.done();
//       } else {
//         // this.$message.error("登录失败");
//         next();
//         // store.dispatch("GenerateRoutes").then((accessRoutes) => {});
//         // next();
//         // if (getTokenDecrypt()) {
//         //   if (to.path === "/login") {
//         //     next({
//         //       path: "/",
//         //     });
//         //     NProgress.done();
//         //   } else {
//         //     if (store.getters.roles.length === 0) {
//         //       // 根据roles权限生成可访问的路由表
//         //       store
//         //         .dispatch("GenerateRoutes")
//         //         .then((accessRoutes) => {
//         //           store
//         //             .dispatch("GetInfo")
//         //             .then((res) => {
//         //               // 判断当前用户是否已拉取完user_info信息
//         //               try {
//         //                 // 解决路由配置出错时可以进入系统
//         //                 router.addRoutes(accessRoutes); // 动态添加可访问路由表
//         //               } catch (e) {
//         //                 console.error("路由信息错误: ", e);
//         //               }

//         //               gelicenseInfo().then((res) => {
//         //                 if (res && res.code === 200) {
//         //                   next({
//         //                     ...to,
//         //                     replace: true,
//         //                   }); // hack方法 确保addRoutes已完成
//         //                 }
//         //               });

//         //               NProgress.done();
//         //             })
//         //             .catch((err) => {
//         //               console.log("获取用户信息接口异常: ", err);
//         //               store.dispatch("LogOut").then(() => {
//         //                 next({
//         //                   path: "/login",
//         //                 });
//         //                 NProgress.done();
//         //               });
//         //             });
//         //         })
//         //         .catch(() => {
//         //           if (
//         //             location.search.includes("token") &&
//         //             location.search.includes("appAcctId")
//         //           ) {
//         //             next(`/403`);
//         //           } else {
//         //             MessageBox.confirm("暂无权限,请联系管理员", "警告", {
//         //               confirmButtonText: "确定",
//         //               showCancelButton: false,
//         //               type: "error",
//         //             });
//         //           }
//         //           NProgress.done();
//         //         });
//         //     } else {
//         //       next();
//         //       NProgress.done();
//         //     }
//         //   }
//         // } else {
//         //   // store.dispatch('GenerateRoutes').then(accessRoutes => {
//         //   //   // 根据roles权限生成可访问的路由表
//         //   //   // router.addRoutes(accessRoutes) // 动态添加可访问路由表
//         //   //   next() // hack方法 确保addRoutes已完成
//         //   // })
//         //   next(`/login?redirect=${to.fullPath}`); // 否则全部重定向到登录页
//         //   NProgress.done();
//         // }
//       }
//     } else {
//       next({
//         path: "/login",
//       });
//     }
//   }
// });

router.afterEach(() => {
  NProgress.done();
});
